package com.coisshi.base.module.oss.service;

import com.coisshi.base.common.exception.BizException;
import com.coisshi.base.module.oss.vo.OssPolicyResultVo;
import org.springframework.web.multipart.MultipartFile;

import java.io.InputStream;

/**
 * OSS服务接口
 * 
 * @author coisshi
 * @date 2025/04/28
 */
public interface OssService {

    /**
     * 获取OSS上传策略
     * @param dirPrefix 目录前缀（如"avatar/"、"product/2025/04/"），可为null
     * @return OSS策略信息
     */
    OssPolicyResultVo getPolicy(String dirPrefix);
    
    /**
     * 上传文件到OSS
     *
     * @param file 文件
     * @param objectName 对象名称，例如：images/2023/avatar.jpg
     * @return 文件URL
     * @throws BizException 业务异常
     */
    String uploadFile(MultipartFile file, String objectName) throws BizException;
    
    /**
     * 上传数据流到OSS
     *
     * @param inputStream 输入流
     * @param objectName 对象名称
     * @return 文件URL
     * @throws BizException 业务异常
     */
    String uploadFile(InputStream inputStream, String objectName) throws BizException;
    
    /**
     * 删除OSS文件
     *
     * @param objectName 对象名称
     * @throws BizException 业务异常
     */
    void deleteFile(String objectName) throws BizException;
} 